<?php
/**
 * @brief Klasa kontrolera dictionary
 * 
 * Jest odpowiedzialna za wyświetlanie słownika (typów) towarów.
 */
class DictionaryController extends Zend_Controller_Action
{
    /**
     * @brief Standardowa metoda poprzedzająca działanie akcji.
     * 
     * Przed wykonaniem akcji, przekazywany jest do wyświetlenia widok pomocniczy
     * nagłówka strony oraz pobierane są wiadomości z flashMessengera.
     */ 
    public function preDispatch()
    {
        $this->view->render('utility/_headbox.phtml');
        $this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
        $this->view->messages = $this->_flashMessenger->getMessages();
    }

    /**
     * @brief Akcja index
     * 
     * Akcja umożliwia przeglądanie słownika towarów. Towary mogą być rozdzielna pod względem  
     * kategorii i nazw. 
     */
    public function indexAction()
    {
        $query = NULL;
        $cat= FALSE;
        $page = 1;
        $params = $this->getRequest()->getParams(); 
        if(isset ($params['cat'])){
            $query = 'Category_id ='.$params['cat'];
            $this->view->cat = $params['cat'];
            $cat = TRUE;
        }
        
        if(isset($params['l'])){
            if($cat){
                $query .= " AND name LIKE '".$params['l']."%'";
            } else {
                $query = "name LIKE '".$params['l']."%'";
            }
        }
        
        if(isset($params['page'])){
            $page = $params['page'];
        }
        
        $mapper = new Application_Model_CommodityTypeMapper();
        $kinds = $mapper->fetchAll($query);
        
        $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($kinds));
        $paginator->setCurrentPageNumber($page);
        $paginator->setItemCountPerPage(20);
        $this->view->kinds = $paginator;   
        
        $cmapper = new Application_Model_CategoryMapper();
        $this->view->categories = $cmapper->fetchAll();
    }
    
    /**
     * @brief Standardowa metoda wykonywana po zakończeniu wykonywania akcji.
     * 
     * Umożliwia wyświetlenie stopki strony.
     */
    public function postDispatch()
    {
        $this->view->render('utility/_footbox.phtml'); 
    }

}

